const jwt = require('jsonwebtoken')
const path = require('path')
const { secret } = require(path.join(process.cwd(), '/config/config'))

const checkTokenMiddleware = (req, res, next) => {
  // // 获取 token
  // const [type, token] = req.headers.authorization?.split(' ') ?? [] // 从Authorization头中提取token
  // return type === 'Bearer' ? token : undefined // 如果是Bearer类型的token，返回token；否则返回undefined
  // // 判断是否携带了 token
  // if (!token) return res.sendResult(null, 400, 'token 缺失')

  // 获取 token
  const [type, token] = req.headers.authorization?.split(' ') ?? [] // 从Authorization头中提取token

  // 判断是否携带了 token，且是否为 Bearer 类型
  if (type !== 'Bearer' || !token) return res.sendResult(null, 400, 'token 缺失')

  // 校验 token
  jwt.verify(token, secret, (err, data) => {
    // 检测 token 是否有效
    if (err) return res.sendResult(err, 401, 'token 校验失败')
    // 保存用户信息到 req 中
    req.user = data
    // 如果 token 校验成功
    next()
  })
}

module.exports = checkTokenMiddleware
